Storage subsystem that connects fibre channel and supports online backup

ABSTRACT

A disk array connected to a storage area network via a fiber channel has one or more ports each controlled by a processor. Even the disk array with one port and one processor executes online processing and backup processing at the same time while considering an online processing load. A port controller not only accepts a request from a host computer but issues a request to other storage controllers to allow online processing and backup processing to be executed at the same time. In addition, the disk array, if provided with a plurality of ports, selects ports or schedules processing depending upon the load to prevent backup processing from affecting online processing performance.

The present application is a continuation of application Ser. No.11/014,887, filed Dec. 20, 2004 now U.S. Pat. No. 7,398,367; which is acontinuation of application Ser. No. 09/820,947, filed Mar. 30, 2001,now U.S. Pat. No. 6,851,020, the contents of which are incorporatedherein by reference.

BACKGROUND OF THE INVENTION

The present invention relates to a storage system, and moreparticularly, to a storage system that connects to a computer systemrequiring high availability.

DESCRIPTION OF THE RELATED ART

A present-day computer system, combined with electronic commerce, isrequired to run continuously, 24 hours a day, 365 days a year. Thecomputer system is also required to ensure integrity as the amount ofinformation to be maintained increases every year. Among these requiredfunctions is the data backup function that immediately recovers datathat might be lost by device errors.

In general, data recorded on an external storage system (storage system)such as a hard disk is copied regularly to a tape and so on for saving(creating a backup) thereon to allow lost data to be recovered in theevent of a device error, software error, or operation error. At thistime, it is required to save backup data in the precise image at thetime it is saved and to continue regular online processing whileperforming backup processing. To do so, data accessed online is duplexedto some other volume, and backup processing is performed for data on theduplexed volume while online processing is performed. Online processingduring backup processing is performed with update data on the othervolume.

Conventionally, a program running on a host computer has managed backupprocessing like this.

For example, U.S. Pat. No. 5,649,152 discloses a technology for allowinga backup program in the host computer to execute all necessaryoperations—management of data duplexing, data saving at a specific pointin time, instruction of data backup to some other storage system, and soon.

U.S. Pat. No. 5,051,887 discloses a technology for continually creatinga dual copy of data in the controller under control of a host computer.However, this method gives a heavy load to the data transfer pathbetween the host computer and a controller.

One of data duplexing methods for use in an external storage system isto perform backup management, conventionally done by a program runningin a computer, in the external storage system. An example of thistechnology is disclosed in U.S. Pat. No. 5,845,295. According to thistechnology, duplexing may be managed, and data may be saved, in anexternal storage system. When creating a backup copy of data, the hostcomputer issues a READ (hereinafter RD) request to the external storagesystem, reads data from it, and then issues a WRITE (hereinafter WR)request to some other storage system to write the data. That is, theexternal storage system simply transfers data to a host computer inresponse to an instruction from the host computer.

Subsequently, U.S. Pat. No. 5,742,792 discloses a technology for copyingdata to some other storage system, not by an instruction from the hostsystem, but directly by an external storage system. This method allowsdata to be copied in the background while performing online processing.This technology, applicable also to backup processing, may be used toexecute data backup processing while executing long continuousoperation.

As described in the prior art, the technology for executing data backupprocessing while executing long continuous operation is alreadyestablished. However, external storage systems used in the disclosedtechnology are large external storage systems. When executing databackup processing and online processing, the data transfer portion of alarge external storage system, that is, the data connection portionconnected to a host computer and the connection portion (hereinaftercalled port) of a backup unit are implemented by separate hardwareunits. This is because a plurality of hardware units are installed in alarge external storage system to allow redundancy. The prior art isapplicable to the large external storage system described above.

However, a small external storage system connected to a workstation or apersonal computer, if redundant in configuration, increases the cost anddoes not bring out an advantage offered by a small-sized system. Like alarge external storage system, a need arises for a small externalstorage system to execute backup processing while executing longcontinuous operation. A first problem to solve is how to meet this needwith less hardware.

In addition, if data is updated during duplexing in a conventionalbackup method in which an instruction is given by the host, the updateof data during duplexing requires four times of transfer operationbetween the external storage system and the host computer (two WRs(Write) for duplexing, RD (Read) for backup, and WR (Write) for anotherstorage system). This increases the bus load between the host computerand the storage system, affecting the performance of daily applications.

In particular, the backup operation of a large amount of data, whichrequires the processor in the external storage system to spend much timein the backup operation, degrades application performance for a longtime until the backup operation ends. Recently, although more and moreexternal storage systems employ the duplexing function, this functionsometimes degrades the performance of daily online processing duringbackup processing. In addition, a small- to medium-size disk arraycontroller for an open systems environment has only one data transferpath between the controller and the host computer. In a system usingthis path as a bus, the daily online processing must be stopped toexecute backup operation.

SUMMARY OF THE INVENTION

It is a first object of the present invention to provide an externalstorage system with a port controller having one port that is used as aconnection portion between a host computer and the external storagesystem for backup operation and that is capable of executing backupoperation and daily online processing at the same time or alternately.

It is a second object of the present invention to provide a storagecontroller capable of executing backup processing without degradingonline processing performance.

To solve the above problems, a storage system according to the presentinvention comprises a communication port that transfers data to or froma host computer and other storage controllers, a cache memory in whichcontrol information and data from the host computer are stored, storagedevices such as a disk device group in which data from the host computeris stored, and a controller that controls the communication port, cachememory, and storage devices. The port controller, which has a port,multiplexes communication processing. The host computers and otherexternal storage systems for backup processing are connected via a fibrenetwork. Control information comprises information for executing an I/Orequest from a host computer via each communication port, transferinformation for executing backup processing for other storagecontrollers, load information for each communication port, informationfor managing the progress of backup processing, information specified bythe user indicating whether each port is for online processing only,backup processing only, or online and backup processing, information forcontrolling data duplexing, and information specified by the user forspecifying when to start duplexing and backup processing. Theinformation is written in the cache memory as necessary.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram showing the configuration of a network environmentused in an embodiment of the present invention.

FIG. 2 is a diagram showing the configuration of a disk array controllerused in the embodiment of the present invention.

FIG. 3 is a diagram showing an example of the configuration of a diskdevice group used in the embodiment of the present invention.

FIG. 4 is a diagram showing an example of interface information betweena port controller and a disk controller used in the embodiment of thepresent invention.

FIG. 5 is a diagram showing an example of port load information used inthe embodiment of the present invention.

FIG. 6 is a diagram showing an example of controller load informationused in the embodiment of the present invention.

FIG. 7 is a diagram showing an example of backup progress informationused in the embodiment of the present invention.

FIG. 8 is a diagram showing an example of user-specified portinformation used in the embodiment of the present invention.

FIG. 9 is a diagram showing an example of copy/backup timing informationused in the embodiment of the present invention.

FIG. 10 is a diagram showing an example of time supervision instructioninformation used in the embodiment of the present invention.

FIG. 11 is a diagram showing an example of priority information used inthe embodiment of the present invention.

FIG. 12 is a flowchart of the generation of an initiator task and atarget task in a port controller 100.

FIG. 13 is a flowchart of the initiator task in the port controller 100.

FIG. 14 is a flowchart of the target task in the port controller 100.

DETAILED DESCRIPTION OF THE EMBODIMENTS

An embodiment of the present invention will now be described withreference to the drawings.

FIG. 1 shows an example of the configuration of the whole systemincluding a disk array used in the embodiment. In FIG. 1, numerals 10,20, and 30 indicate host computers (higher-level systems), and numerals5000 and 6000 indicate disk arrays (external storage systems (storagesystems) connected to host computers). The host computers and diskarrays are connected by fibre channels via fabric switches to form astorage area network (SAN) 40. Disk arrays 5000 and 6000 may each beonline to the host computers to execute online processing, and the diskarray 6000 may be used as a backup of the disk array 5000.

In this embodiment, assume that the disk array 5000 duplexes data whileexecuting online processing with the host computers and transfers backupdata to the disk array 6000. An external storage system (storage system)that receives backup data need not be a disk array. For example, thebackup device may be a magnetic tape library or an optical disc.

FIG. 2 shows the configuration of a disk array. The disk array 5000comprises a controller A 1000 and a controller B 2000 which are in thedual configuration, a disk device group 4000 which stores thereon datafrom the host computers, and a personal computer/workstation (PC/WS)3000 from which the operation of the port controller in each controlleris specified. The disk device group 4000 is usually has an arrayconfiguration.

Next, controllers A and B will be described. Because controllers A and Bhave the same configuration, controller A will be described.

Controller A comprises a cache memory 500, port A (101) via which datais transferred and a port A controller 100 that controls port A, andport B (201) via which data is transferred and a port B controller 200that controls port B. These ports are connected to the fibre channelsand form a network using the fabric switches.

Controller A further comprises a disk array controller 300 that controlscontroller A in its entirety, and the disk array controller 300comprises a RAM 400 in which various types of information forcontrolling the controller is stored. The disk array controller 300 alsohas the timer function (not shown in FIG. 2).

The cache memory 500 described above is usually a non-volatile memory.In this embodiment, data in the cache memory 500 is written also in thecache memory of controller B. In addition to a data unit in which datafrom the host computers is temporarily stored, the cache memory 500 hasa management information unit 600 which manages the information on, andstatus of, the data.

Controller A has disk device controllers (drive controllers) 700 and 800that control the disk device group 4000. The disk device controllerstransfer data to or from the disk devices in the disk device group. Adisk device, composed of a storage drive storing thereon data and adrive controller controlling the drive, is connected to the diskcontroller via the SCSI interface or a fibre channel.

In this embodiment, controller A, which is connected to the higher-levelsystems (host computers) via fibre channels, has two ports. Upondetecting an unrecoverable error in controller A, an error controller900 notifies controller B of the detected error. In response to thenotification, controller B receives data and management information fromthe cache memory and continues execution that has been executed incontroller A.

FIG. 3 shows the configuration of a disk device group. The disk devicegroup, built in an array configuration, may have a plurality of logicalvolumes allocated to it. The sub-volumes of a logical unit allocated foruse in backup processing may be set in each (main) logical volume, or avolume group may be allocated as a work volume for duplexing.

FIG. 4 shows interface (I/F) information used for transferring databetween the port controller 100/200 and the disk array controller 300.The interface information comprises transfer instruction information 410(port A) and 430 (port B) used when transferring data from each port toanother storage controller and host request information 420 (port A) and440 (port B) used when transferring an I/O request from a host computerto the disk array controller 300. Each information unit comprises a portID (411), a command 412, and cache ADR (address) information 413. Forthe transfer instruction information, the port ID identifies to whichdevice in the storage area network a data transfer request is to betransferred; for the host request information, the host ID identifiesfrom which device a data transfer request is to be transferred. Morespecifically, the port ID corresponds to the AL-PA (Fibre ChannelArbitrated Loop or FC-AL) of the fibre channel. The command information412 identifies the operation type, RD or WR. The cache ADR information413 contains information indicating a location within the storage systemto or from which data to be transferred. The information described aboveis managed in the RAM.

When an I/O request is received from a host via the fibre channel, theport A controller sets the port A host request information 420 to notifythe disk array controller 300 of the I/O request. Like the port A hostrequest information 420, the port B controller sets the port B hostrequest information 440. The disk array controller references theinformation 420 and 440 and controls the disk device group 4000 andcache memory 500 to execute the I/O request.

On the other hand, the port A transfer instruction information 410 isset when backup data is transferred from the (sub) logical volume of thedisk device group 4000 to another storage controller. The port Acontroller 100 references the port A transfer instruction information410 and issues a command via the fibre channel. When issuing a commandto some other storage system, the port ID of the other storage system isset in the port ID. The other storage controller receives this command,executes it, and stores backup data on the recording medium. Like theport A transfer instruction information 410, the port B transferinstruction information 430 is used by the port B controller 200.

The port A transfer instruction information 410 and the port A hostrequest information 420 are used, as described above, in the interfacebetween the port controller 100 and the disk array controller duringdata communication between a host computer and a backup device. Thesetwo types of information are used as follows. That is, the port A hostrequest information 420 is used when an access request is received fromsome other device; on the other hand, the port A transfer instructioninformation 410 is used when the disk array controller sends an accessrequest to some other device. Therefore, when the disk array controllerwants to send a transfer instruction to a host computer, it uses theport A transfer instruction information 410. That is, the portcontroller 100 specifies the port ID of the host computer to transferdata to the host computer. Conversely, when an access request isreceived from a backup device, the port A host request information 420is used. In this way, the port controller 100 switches the port ID ofthe port A transfer instruction information 410 between a host computerand a backup device to execute communication.

FIG. 5 shows load information table for each port. Port load information450 is information on port A, while port load information 460 isinformation on port B. This information is collected from each port. Theinformation is composed of a number of I/O operations 451 indicating thetotal number of I/O operations for a predetermined period of time, atransfer amount 452, and access information 453. When the disk arrayreceives an I/O request from the host computer and the disk arraycontroller 300 identifies the host request information, the datatransfer length and the command are obtained from the commandinformation 412. The data transfer amount is the transfer lengthspecified by RD (Read) or four times the transfer length is specified byWR (Write) (four times considering the number of times data istransferred for data updating processing during duplexing). The commandinformation on the current command is compared with the commandinformation on the previous command stored in the RAM 400 to check ifthe access is continuous (sequential) or random. The number of I/Ooperations 451 is incremented by one, the data transfer length is addedto the transfer amount 452, and the access type (sequential or random)is written in the access information 453. Note that this information iscleared periodically to collect information per unit time. The timerfunction in the disk array controller 300 is used to maintain theinformation for a specific period of time. This information is stored inthe RAM 400.

Controller A load information 610 shown in FIG. 6, a numeric total valueof the port A load information and the port B load information withincontroller A, is stored in the management information unit 600 in thecache memory 500. The disk array controller 300 also sets up thecontroller A load information when it receives a command. Controller Bload information 620 is the same as the controller A load information610.

Backup progress information 630, shown in FIG. 7, is stored in themanagement information unit 600 in the cache memory 500. Thisinformation is composed of the number (target LU number) 631 of alogical volume for which backup processing is being executed and abackup execution pointer 632 indicating the progress of backupprocessing. When a backup instruction is received from a host computer,the disk array controller 300 also writes the logical number of thevolume for which backup processing is to be performed into the target LUnumber 631, sends the backup instruction to the port controller 100 or200 and, at the same time, updates the backup execution pointer 632.

A copy pointer 633 is used when duplexing data. The copy pointer 633indicates to what point data has been duplexed. During data duplexing,the locations in which duplexing has been done are sequentially updated.When backup processing is executed at the same time, the copy pointer633 is referenced to control backup processing so that backup processingis executed for data within the range not exceeding the location pointedto by this pointer. This allows backup processing to be performed for apart where data has been duplexed.

A user-specified port information table 640, shown in FIG. 8, is storedin the management information unit 600 in the cache memory 500. Thistable contains a port usage value specified by the user via the personalcomputer/workstation (PC/WS) 3000. More specifically, the user specifiesa value indicating that the port is for backup processing only, a valueindicating that the port is for online processing only, or a valueindicating the port is for both online processing and backup processing.When a backup request is received, the disk array controller 300references this information, searches for a backup port, and issues therequest to the port controller of the port.

A copy/backup timing instruction information table 650, shown in FIG. 9,is stored in the management information unit 600 in the cache memory500. This table contains information indicating when to execute copyprocessing for duplexing and subsequent backup processing specified viathe personal computer/workstation (PC/WS) 3000. Usually, the PC/WS isconnected to the controller via a LAN.

A time supervision instruction information table 660, shown in FIG. 10,is stored in the management information unit 600 in the cache memory500. When the copy/backup timing instruction information table 650 shownin FIG. 9 indicates a time, the time information is set in the timesupervision instruction information table 660.

FIG. 11 shows a priority information table 670. This table contains avalue indicating to what processing, online processing or backupprocessing, the disk array controller assigns priority. The userspecifies this value in advance from the personal computer/workstation(PC/WS) 3000. The disk array controller 300 references this informationwhen it starts backup processing. If backup processing has priority, thecontroller transfers a predetermined amount of data. Then, thecontroller checks if an online processing request is present. If noonline processing request is present, the controller performs backupprocessing for a predetermined amount data. Conversely, if onlineprocessing has priority, the controller executes only online processingfor a predetermined time and, then, transfers a predetermined amount ofbackup data, and then executes online processing for a predeterminedtime. The larger the predetermined amount of backup data, the higher thebackup priority. The longer the predetermined online processing time,the higher the online processing priority.

The configuration of controller A has been described with an example.The configuration of controller B is the same as that of controller A.

Next, the basic RD (Read)/WR (Write) operation of the disk arraycontroller will be described. Upon receiving an RD request from a hostcomputer, the port controller 100 sets the request in the port A hostrequest information 420. The disk array controller 300 references theport A host request information 420, finds that the request is an RDrequest, and checks the requested ADR (address) and the data length. Ifthe requested data is in the cache memory 500, the controller notifiesthe port A controller of the cache ADR (address) and instructs that thedata be sent to the host computer from which the RD request wasreceived. If the requested data is not in the cache memory, thecontroller reads the requested data from the disk device group 4000,stores it in the cache memory 500, and transfers it to the hostcomputer.

Upon receiving a WR request from a host computer, the port controller100 sets the request in the port A host request information 420. Thedisk array controller 300 references the port A host request information420, finds that the request is a WR request, and checks the requestedADR (address) and the data length. After transferring data to the cachememory 500, the controller requests the port controller to inform thehost computer that data has been transferred. After that, the controllerasynchronously sends (writes) data from the cache memory 500 to the diskdevice group.

Next, the one-port parallel operation of online processing and backupprocessing, the basic function of the present invention, will bedescribed. Note that a host computer request described below may beissued from the host computer as one of standard commands or may beentered from a personal computer/workstation (PC/WS).

First, referring to FIG. 12, the communication processing in whichonline processing and backup processing are executed in parallel via theport controller 100 will be described. In FIG. 12 and the followingfigures, it is assumed that the port controller is connected via afibre.

When the port controller is connected via a fibre, a chip set, forexample, a Emulex's chip set, is used. Within this chip set is a chip,called 2410020, that executes the fibre protocol control. This chip setallows a port to duplex communication, for example, to execute two typesof processing, online processing with the host computer and backupprocessing with the backup device, at the same time in a time-sharingmanner. Communication multiprocessing using this chip set will bedescribed with reference to the flowcharts shown in FIG. 12 andfollowing figures.

FIG. 12 is a flowchart showing how to control the generation of aninitiator task and a target task. In step 1101, the port A controller100 references the port A transfer instruction information 410 to checkif the disk array controller 300 has issued an initiator task generationrequest. For example, when executing backup processing, the disk arraycontroller 300 sets a transfer request in the port A transferinstruction information 410 to request the generation of the initiatortask. In response to this transfer request, the port A controller 100executes step 1102 that follows.

In step 1102, the initiator task for executing the requested datatransfer is generated. Note that this initiator task executes processingspecified by the port A transfer instruction information. Therefore,this task not only sends but receives data. When sending backup data toa backup device, the initiator task is generated with the backupdestination device information as the parameter.

On the other hand, if there is no transfer request in step 1101, theport controller checks in step 1103 if there is a connection requestfrom some other host computer. In step 1103, the port A controller 100checks if there is a transfer request from some other storage system ora host computer. The transfer request in this context is, for example, aLogin request from some other storage system. If there is a transferrequest from some other storage system, step 1104 is executed. In step1104, a target task for executing transfer processing in response to thetransfer request is generated. This target task is executed in responseto an access request from some other storage system. Therefore, thistask not only receives but sends data. In the flowchart, when theinitiator task or the target task is generated, control returns to step1101. Therefore, the port controller waits for the next transfer requestwithout wait for the generated task to be completed. The abovedescription implies that the initiator task and the target task, thoughin a time-sharing manner, may be executed almost at the same time. Atthis time, because packet data may be sent in a time-sharing manner overthe fibre channel, data may be sent or received over the fibre channelnetwork even if the port A controller 100 executes two or more tasks atthe same time.

FIG. 13 is a flowchart showing the processing executed by the initiatortask. The initiator task is, for example, a communication task by whichthe disk array controller 300 transfers data to some other storagesystem for backup processing. More specifically, in step 1201, thecontroller issues the Login command to connect to the destinationstorage system. If Login is authenticated, the controller sends data tothe destination storage system in step 1202. During data transfer, thecontroller sends data in most cases except when data transferauthentication is executed, in which case, the controller sends andreceives data. After completion of the data transfer, the controllerissues the Logout command in step 1203.

FIG. 14 is a flowchart showing the processing executed by the targettask. The target task is a task by which the controller sends andreceives data I/O commands to or from a host computer, for example, whenexecuting online processing with the host computer. For example, whenthe READ command is received from the host computer, the disk arraycontroller 300 that receives the command sends data to the hostcomputer.

In step 1301, the controller authenticates Login sent from the otherstorage system. To do so, the controller references the managementinformation unit 600 in the cache memory 500 to check if the otherstorage system is valid. The management information unit 600 containsthe identifiers of the hosts and other storage systems allowed toconnect to this storage system. The controller references thisinformation to decide whether the other storage system is allowed toconnect to this storage system. If the other storage system issuccessfully authenticated, the next step 1302 is executed; if the otherstorage system is invalid, the controller sends an error notificationand stops processing. In step 1302, the controller processes the datatransfer request sent from the other storage system. During datatransfer, the controller receives data in most cases except when datatransfer authentication is executed, in which case, the controller sendsand receives data. After completion of the data transfer, the Logoutcommand is issued in step 1303. In step 1303, after the data transferwith the other storage system ends, Logout issued from the other storagesystem and the detected Logout is authenticated.

As shown in the flowcharts described above, the initiator task and thetarget task may be multi-processed. Although there is only one port,online processing and backup processing may be executed at the sametime.

Next, operation that is executed when there are two or more ports willbe described.

In this case, because there are two or more ports, ports may be assignedto online processing and backup processing, one for each. In that case,it is necessary to judge which port to select depending upon the loadstatus of each port. The following describes the logic using the diskarray 5000 comprising two controllers, A and B.

First, the disk array controller 300 compares a transfer amount 612included in the controller A load information 610 with that included inthe controller B load information 620. The controller with the largertransfer amount is determined as the controller with a heavy load. Ifboth controller have the per-unit-time transfer amount that is not solarge, the disk array controller compares the number of I/O operations611 of one controller with that of the other to judge the load. Ifcontroller A is determined to have a heavier load, the disk arraycontroller 300 references the port load information stored in the RAM400 in controller A.

More specifically, the disk array controller references the accessinformation 453 in the port A load information 450. The accessinformation 453 indicates the type of I/O processing, sequential orrandom, requested by the host computer. If the I/O processing of a portrequested by the host computer is sequential, the port is assumed tohave a heavy load. When the I/O processing of both ports is sequential,the disk array controller compares the transfer amount 452 of one portwith that of the other port to judge the load. When the I/O processingof both ports is random, the disk array controller compares the transferamount 452 of one port with that of the other port. A port with thelighter load is thus selected to minimize an effect on other processingsuch as online processing.

Next, the port selection logic for use when backup processing issequential will be described. In the description below, it is assumedthat disk array 5000 has two controllers each with two ports. In thiscase, a total of four ports are provided.

Assume that, in the disk array 5000, sequential processing is executedon three ports and random processing on one port. Because backupprocessing is sequential, selecting a port, on which sequentialprocessing is now executed, for backup processing would increase theload. Therefore, not a sequential-access port but a random-access portis selected for backup processing. This increases backup processingefficiency with no effect on online processing.

Next, switching backup processing from one port to another according tothe port load status will be described. Because the port loadcontinually changes, it is necessary to check the load status of theports and, depending upon the port load status at a specific point intime, to search for a port with a load lighter than that of the port onwhich backup processing is being executed. Then, backup processing istaken over to the port with a lower load. Selection of a port isperformed as follows. The controller references the load information,described above, at a regular interval and selects a port with a loadlighter than that of the previously-selected port. Backup processing isswitched as follows. The port that is executing backup processing keepsthe backup progress information 630 updated during execution. Whenbackup processing is switched from one port to another, the port thatstarts backup processing references the backup progress information 630and obtains the target LU number 631 and the backup execution pointer632 to take over the backup progress status. In addition, if it is foundthat the load of a plurality of ports is light, for example, at night,backup processing may be distributed among them. More specifically, thebackup progress information stored in the cache is referenced andupdated for backup processing. Switching backup processing from one portto another in this manner makes backup processing more efficient. It ispossible to execute backup processing intensively when the user need it,for example, at night or on week ends.

Not only a host computer but the user on a personal computer/workstation(PC/WS) may start backup processing. The user on the personalcomputer/workstation (PC/WS) requests the disk array controller 300 tostart backup processing. At this time, the user may even specify a porton which backup processing it to be executed. What's more, the user onthe personal computer/workstation (PC/WS) may specify the type ofprocessing to be allocated to each port. For example, the user mayspecify that a port is for backup processing only, for online processingonly, or for both online processing and backup processing. The diskarray controller references this information to select a port for backupprocessing. In addition, the user may specify that backup processing beexecuted with priority on online processing. The user may even specify aprecedence ratio.

Moreover, backup processing may be started, not by the user, butautomatically at a specified backup start time that is set on thepersonal computer/workstation (PC/WS).

Port selection, backup switching, and user's backup operations have beendescribed above. Next, recovery from a backup processing error, as wellas backup processing for a non-online volume to which data has beencopied, will be described.

First, recovery from a backup processing error will be described.

When an error occurs in a controller during backup processing, the errorcontroller 900 in the other controller detects the error, references thebackup progress information 630 in the cache memory 500, and continuesbackup processing. This allows the failing controller to be disconnectedfrom the disk array and to be replaced to recover from the error. Aftererror recovery, backup processing may also be switched as describedabove.

Next, parallel execution of backup processing and volume copy processingwill be described. Volume copy processing refers to duplexing in whichdata is copied from one volume to another. When a logical volume iscopied to another volume, two logical volumes, main (source) and sub(destination), are present in the physical disk device group. When thehost computer executes an I/O operation for the main (copy source)volume, the result of the operation is reflected on the sub-volume tomaintain the duplexed state.

This function is used during backup processing as described below.Online processing is executed for the main logical volume (copy source),while backup processing is executed for the sub logical volume. Duringbackup processing, the duplexed state is temporarily suspended to enablebackup processing to be executed for data recorded on the sub logicalvolume at the suspension point.

At this time, an increase in the capacity of the main logical volumeincreases the duplexing load, sometimes affecting online processingsignificantly. In addition, backup processing that is executed afterduplexing takes long. To avoid these problems, the system according tothe present invention executes volume copy processing and backupprocessing in parallel to reduce backup data collection time and thesubsystem load, thus preventing performance from being degraded.

As a matter of fact, data is transferred to or from the transfer pathvia the cache memory 500 in the controller. For example, data is stagedfrom the normal main volume to the cache memory, is written from thecache memory to the sub logical volume, is staged from the sub logicalvolume to the cache memory to transfer backup data, and is transferredfrom the cache memory to the fibre channel. These operations increasethe internal bus load and degrades online processing performance of thesystem.

To reduce the load, data to be staged from the main logical volume tothe cache memory 500 for duplexing is transferred directly as backupdata. This reduces the bus load and prevents online processingperformance from being degraded. Parallel execution of logical volumeduplexing processing and backup processing reduces the time needed forbackup processing.

Volume copy processing and backup processing, if combined, find manyapplications in a variety of needs and operations. For example, someapplication requires both a replica of data stored in a logical volumeat a specific point in time and a backup copy on the weekend. To satisfythe requirement like this, the system according to the present inventionallows the user on the personal computer/workstation (PC/WS) to specifywhen to create a data copy and a backup copy. In response to a duplexingrequest, the disk array controller 300 references the copy/backup timinginstruction information table 650 and, if parallel control is specified,performs parallel control as described above. If parallel control is notspecified, the disk array controller performs copy processing. Inaddition, a request to start backup processing at a specific time, forexample, a request to start backup processing immediately aftermidnight, may be specified in the time supervision instructioninformation table 660. The disk array controller compares the currenttime with this information at a regular interval and, when the specifiedtime arrives, starts backup processing.

The present invention provides a disk array controller connected with afibre channel in a network environment such as a storage area network.This disk array controller can execute online processing and backupprocessing at the same time even in a one-port configuration. Thiscontroller performs backup processing according to the load or at aspecified time while maintaining online processing performance. Inaddition, even if a controller error or a port error occurs, anotherport or another controller continues processing. The controlleraccording to the present invention controls copy processing and backupprocessing at the same time and allows the user to specify a combinationof copy processing and backup processing for execution.

While the preferred form of the present invention has been described, itis to be understood that the present invention is not limited to theembodiments but that modifications will be apparent to those skilled inthe art without departing from the spirit of the present invention.

1. A method for sending/receiving data in a storage system, the storagesystem comprising: a first storage device; and a second storage device,the first storage device comprising: a port, a port control unit tocontrol the port, a storing device to store a data, a control unit; anda memory, wherein the method comprises the step of: generating a targettask including a plurality of processes to execute a first process whichreceives data from the second storage device based on a demand receivedby the first storage device from the second storage device; generatingan initiator task including a plurality of processes to execute a secondprocess which transfers data from the first storage device to the secondstorage device based on a demand by the control unit; and controllingthe port so as to execute in a timesharing manner the plurality of theprocesses included in the first process and the second process bychanging executions of the generated plurality of processes included inthe target task and the plurality of the processes included in theinitiator task.
 2. A method for sending/receiving data in a storagesystem, the storage system comprising: a first storage device; and aplurality of other devices, the first storage device comprising: a port,a port control unit to control the port, a storing device to store adata, a control unit; and a memory, wherein the method comprises thestep of: generating a target task including a plurality of processes toexecute a first process which receives data from the plurality of otherdevices based on a demand received by the first storage device from afirst other device included in the plurality of other devices;generating a first initiator task to execute a second process whichtransfers data from the first storage device to the first other devicebased on a demand by the control unit; controlling the port so as toexecute in a time-sharing manner the first process and the secondprocess by changing executions of the plurality of the processesincluded in the generated first target task, a generated second targettask, the first initiator task and a generated second initiator task. 3.A storage system comprising: a first storage device; and a secondstorage device, the first storage device comprising: a port, a portcontrol unit to control the port, a storing device to store data, acontrol unit, and a memory, wherein the port control unit: generates atarget task including a plurality of processes to execute a firstprocess which receives data from the second storage device based on ademand received by the first storage device from the second storagedevice; generates an initiator task including a plurality of processesto execute a second process which transfers data from the first storagedevice to the second storage device based on a demand by the controlunit; and controls the port so as to execute in a time-sharing mannerthe plurality of the processes included in the first process and thesecond process by changing executions of the generated plurality ofprocesses included in the target task and the plurality of the processesincluded in the initiator task.
 4. A storage system according to theclaim 3, wherein the memory stores transfer indicating information whichhas information to be able to determine a forwarding address and anaddress to indicate a position of data to be transferred.
 5. A storagesystem according to the claim 3, wherein the port control unit storesinformation to indicate a data sender and address information toindicate the position where the data is stored when the first storagedevice receives a demand from the second storage device.
 6. A storagesystem comprising: a first storage device; and a plurality of otherdevices, wherein the first storage device comprises: a port, a portcontrol unit to control the port, a storing device to store data, acontrol unit; and a memory; and wherein the port control unit generatesa target task including a plurality of processes to execute a firstprocess which receives data from a first other device included in theplurality of other devices based on a demand received by the firststorage device from the first other device; generates a first initiatortask including a plurality of processes to execute a second processwhich transfers data from the first storage device to the first otherdevice based on a demand by the control unit; controls the port so as toexecute in a time-sharing manner the first process and the secondprocess by changing executions of the plurality of the processesincluded in the generated first target task, a generated second targettask, the generated first initiator task and a generated secondinitiator task.
 7. A storage system according to the claim 6, whereinthe memory has a priority information to indicate whether the firstprocess or the second process has priority, and wherein the control unitreceives data in a predetermined time interval in the first process thentransfers a predetermined amount of data in the second process if thefirst process has priority when the control unit reads the priorityinformation and transfers a predetermined amount of data in the secondprocess then receives data in a predetermined time interval in the firstprocess if the second process has priority when the control unit readsthe priority information.
 8. A storage system according to the claim 6,wherein the memory has transfer indicating information which hasinformation to be able to determine a forwarding address and an addressto indicate a position of data to be transferred.
 9. A storage systemaccording to the claim 6, wherein the port control unit storesinformation to indicate a data sender and address information toindicate the position where the data is stored when the first storagedevice receives a demand from the second storage device.
 10. A storagesystem according to the claim 8, wherein the port control unit controlsso as to change the other device to be communicated with based on storedinformation in the memory.